#include <thread>

namespace MThreads {
	class MThread {
	public:
		MThread();
		template <typename ... Tx>
		MThread(Tx ...);
		~MThread();
		MThread( const MThread & copy );
		MThread & operator= ( const MThread & rhs );
		
		template <typename ... Tx>
		bool SetThread( void fn_ptr(Tx ... ) );

	private:
		template <typename ... Tx>
		Tx var_list;
		template <typename ... Tx>
		void (*m_fn_ptr)( Tx ... );
	};
};

template <typename ... Tx>
MThreads::MThread::MThread( void (*fn_ptr)( Tx ... ) ) : m_fn_ptr(fn_ptr)
{

}

template <typename ... Tx>
bool MThreads::MThread::SetThread( void (*fn_ptr)( Tx ... ) )
{

}